package com.light.netty.client.security;

import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToByteEncoder;
import io.netty.util.CharsetUtil;

// 协议编码器
public class MessageEncoder extends MessageToByteEncoder<MessageProtocol> {
    @Override
    protected void encode(ChannelHandlerContext ctx, MessageProtocol msg, ByteBuf out) {
        System.out.println("[Encoder] Encoding: id={}, data={}");
        // 写入 id (4字节)
        out.writeInt(msg.getId());
        // 写入 length (4字节)
        byte[] dataBytes = msg.getData().getBytes(CharsetUtil.UTF_8);
        out.writeInt(dataBytes.length);
        // 写入 data (N字节)
        out.writeBytes(dataBytes);
    }
}